;--------------------------------
; Test file for 68000 assembler.
;
; asm68.exe
;--------------------------------

; Init bit unpacker - text ptr, bit count
;FF:009A  21 CB  MOVE.l  A3,($FFB0)               A0=FFFFFFFF A1=FFFFF8C0 A2=FFFFC170 A3=00FF1EA2 A4=00000000 A5=00FF7114 A6=00C00004 A7=00FFFF60 D0=FFFFB118 D1=00000000 D2=0000FFFF D3=0000FFFF D4=FFFFB198 D5=00000080 D6=FFFFE7F9 D7=0000E7E6 xnzvc
;FF:009E  31 FC  MOVE.w  #$0010,($FFB4)           A0=FFFFFFFF A1=FFFFF8C0 A2=FFFFC170 A3=00FF1EA2 A4=00000000 A5=00FF7114 A6=00C00004 A7=00FFFF60 D0=FFFFB118 D1=00000000 D2=0000FFFF D3=0000FFFF D4=FFFFB198 D5=00000080 D6=FFFFE7F9 D7=0000E7E6 xnzvc

; Flag <RAW> / <BITPACK> mode
;FF:00A4  42 78  CLR.W   ($FFB6)                  A0=FFFFFFFF A1=FFFFF8C0 A2=FFFFC170 A3=00FF1EA2 A4=00000000 A5=00FF7114 A6=00C00004 A7=00FFFF60 D0=FFFFB118 D1=00000000 D2=0000FFFF D3=0000FFFF D4=FFFFB198 D5=00000080 D6=FFFFE7F9 D7=0000E7E6 xnzvc
;FF:00A8  08 B8  BCLR    #0,($FFB3)               A0=FFFFFFFF A1=FFFFF8C0 A2=FFFFC170 A3=00FF1EA2 A4=00000000 A5=00FF7114 A6=00C00004 A7=00FFFF60 D0=FFFFB118 D1=00000000 D2=0000FFFF D3=0000FFFF D4=FFFFB198 D5=00000080 D6=FFFFE7F9 D7=0000E7E6 xnZvc
;FF:00AE  66 04  BNE     #$04 [FF:00B4]           A0=FFFFFFFF A1=FFFFF8C0 A2=FFFFC170 A3=00FF1EA2 A4=00000000 A5=00FF7114 A6=00C00004 A7=00FFFF60 D0=FFFFB118 D1=00000000 D2=0000FFFF D3=0000FFFF D4=FFFFB198 D5=00000080 D6=FFFFE7F9 D7=0000E7E6 xnZvc
;FF:00B0  52 78  ADDQ.W  #1,($FFB6)               A0=FFFFFFFF A1=FFFFF8C0 A2=FFFFC170 A3=00FF1EA2 A4=00000000 A5=00FF7114 A6=00C00004 A7=00FFFF60 D0=FFFFB118 D1=00000000 D2=0000FFFF D3=0000FFFF D4=FFFFB198 D5=00000080 D6=FFFFE7F9 D7=0000E7E6 xnZvc

;FF:00B4  4E 75  RTS                              A0=FFFFFFFF A1=FFFFF8C0 A2=FFFFC170 A3=00FF1EA2 A4=00000000 A5=00FF7114 A6=00C00004 A7=00FFFF60 D0=FFFFB118 D1=00000000 D2=0000FFFF D3=0000FFFF D4=FFFFB198 D5=00000080 D6=FFFFE7F9 D7=0000E7E6 xnzvc

; ===================================================================
; ===================================================================
; ===================================================================

; Purpose:
; - Remap to check for 24-bit index #s

;029BC0-03FFFF @ 16440

; note: A3.w has address

	.code
	org 0x3ff00

start:
	; SAVE regs
	movem.l regs d01a3,-(a7)
	move.w a3,d0


	; OLD code - compression mode
	clr.w 0xffffb6
	bclr.w #0,0xffffb3
	bne END_REMAP

	addq.w #1,0xffffb6	; Raise bitpack flag

; ------------------------------------------------------------
; ############################################################
; ------------------------------------------------------------

	; retrieve 16-bit index code (LSB)
	moveq #0x00,d1
	move.b 0x0001(a3),d1
	lsl.l #8,d1
	move.b 0x0000(a3),d1

	; Now check if we have an index # (000-1FF)
	cmpi.w #0x200,d1
	bcc END_REMAP


; note: we will use RAW 16-bit SJIS for testing
	clr.w 0xffffb6		; lower flag

	move.w d1,d0		; 24-bit index table
	add.w d1,d0
	add.w d1,d0

	lea 0x2a000,a3		; find index address
	add.w d0,a3

	moveq.l #0,d0		; read 24-bit ptr
	move.b (a3)+,d0
	lsl.l #8,d0
	move.b (a3)+,d0
	lsl.l #8,d0
	move.b (a3)+,d0

	move.l d0,0xffffb0	; resave ptr

; ------------------------------------------------------------
; ############################################################
; ------------------------------------------------------------

END_REMAP:
	; POP regs
	movem.l (a7)+,regs d01a3

	jmp.l 0xff00b4		; OLD RTS
